c9b9c2457eca988a43c763643e3d1c622787aaaa,portal-impl/src/com/liferay/portlet/journal/lar/JournalPortletDataHandlerImpl.java,JournalPortletDataHandlerImpl,importArticle,#PortletDataContext#Map#Map#Map#Element#,391
Before Change
if (context.getBooleanParameter(_NAMESPACE, "comments")) {
context.importComments(
JournalArticle.class, new Long(article.getResourcePrimKey()),
new Long(existingArticle.getResourcePrimKey()),
context.getGroupId());
}
if (context.getBooleanParameter(_NAMESPACE, "ratings")) {
context.importRatingsEntries(
JournalArticle.class, new Long(article.getResourcePrimKey()),
new Long(existingArticle.getResourcePrimKey()));
}
After Change
String path = articleEl.attributeValue("path");
if (!context.isPathNotProcessed(path)) {
return;
}
JournalArticle article = (JournalArticle)context.getZipEntryAsObject(
path);
long userId = context.getUserId(article.getUserUuid());
long plid = context.getPlid();
String articleId = article.getArticleId();
boolean autoArticleId = false;
if ((Validator.isNumber(articleId)) ||
(JournalArticleUtil.fetchByG_A_V(
context.getGroupId(), articleId,
JournalArticleImpl.DEFAULT_VERSION) != null)) {
autoArticleId = true;
}
String newArticleId = articleIds.get(articleId);
if (Validator.isNotNull(newArticleId)) {
// A sibling of a different version was already assigned a new
// article id
articleId = newArticleId;
autoArticleId = false;
}
boolean incrementVersion = false;
String parentStructureId = MapUtil.getString(
structureIds, article.getStructureId(), article.getStructureId());
String parentTemplateId = MapUtil.getString(
templateIds, article.getTemplateId(), article.getTemplateId());
Date displayDate = article.getDisplayDate();
int displayDateMonth = 0;
int displayDateDay = 0;
int displayDateYear = 0;
int displayDateHour = 0;
int displayDateMinute = 0;
if (displayDate != null) {
Calendar displayCal = CalendarFactoryUtil.getCalendar();
displayCal.setTime(displayDate);
displayDateMonth = displayCal.get(Calendar.MONTH);
displayDateDay = displayCal.get(Calendar.DATE);
displayDateYear = displayCal.get(Calendar.YEAR);
displayDateHour = displayCal.get(Calendar.HOUR);
displayDateMinute = displayCal.get(Calendar.MINUTE);
if (displayCal.get(Calendar.AM_PM) == Calendar.PM) {
displayDateHour += 12;
}
}
Date expirationDate = article.getExpirationDate();
int expirationDateMonth = 0;
int expirationDateDay = 0;
int expirationDateYear = 0;
int expirationDateHour = 0;
int expirationDateMinute = 0;
boolean neverExpire = true;
if (expirationDate != null) {
Calendar expirationCal = CalendarFactoryUtil.getCalendar();
expirationCal.setTime(expirationDate);
expirationDateMonth = expirationCal.get(Calendar.MONTH);
expirationDateDay = expirationCal.get(Calendar.DATE);
expirationDateYear = expirationCal.get(Calendar.YEAR);
expirationDateHour = expirationCal.get(Calendar.HOUR);
expirationDateMinute = expirationCal.get(Calendar.MINUTE);
neverExpire = false;
if (expirationCal.get(Calendar.AM_PM) == Calendar.PM) {
expirationDateHour += 12;
}
}
Date reviewDate = article.getReviewDate();
int reviewDateMonth = 0;
int reviewDateDay = 0;
int reviewDateYear = 0;
int reviewDateHour = 0;
int reviewDateMinute = 0;
boolean neverReview = true;
if (reviewDate != null) {
Calendar reviewCal = CalendarFactoryUtil.getCalendar();
reviewCal.setTime(reviewDate);
reviewDateMonth = reviewCal.get(Calendar.MONTH);
reviewDateDay = reviewCal.get(Calendar.DATE);
reviewDateYear = reviewCal.get(Calendar.YEAR);
reviewDateHour = reviewCal.get(Calendar.HOUR);
reviewDateMinute = reviewCal.get(Calendar.MINUTE);
neverReview = false;
if (reviewCal.get(Calendar.AM_PM) == Calendar.PM) {
reviewDateHour += 12;
}
}
File smallFile = null;
if (article.isSmallImage()) {
byte[] bytes = context.getZipEntryAsByteArray(
getArticleSmallImagePath(context, article));
smallFile = File.createTempFile(
String.valueOf(article.getSmallImageId()),
StringPool.PERIOD + article.getSmallImageType());
FileUtil.write(smallFile, bytes);
}
Map<String, byte[]> images = new HashMap<String, byte[]>();
if (context.getBooleanParameter(_NAMESPACE, "images")) {
List<ObjectValuePair<String, byte[]>> imageFiles =
context.getZipFolderEntries(
getArticleImagePath(context, article));
if (imageFiles != null) {
for (ObjectValuePair<String, byte[]> imageFile : imageFiles) {
String fileName = imageFile.getKey();
if (!fileName.endsWith(".xml")) {
int pos = fileName.lastIndexOf(StringPool.PERIOD);
if (pos != -1) {
fileName = fileName.substring(0, pos);
}
images.put(fileName, imageFile.getValue());
}
}
}
}
String articleURL = null;
PortletPreferences prefs = null;
String[] tagsEntries = null;
if (context.getBooleanParameter(_NAMESPACE, "tags")) {
tagsEntries = context.getTagsEntries(
JournalArticle.class, article.getResourcePrimKey());
}
JournalCreationStrategy creationStrategy =
JournalCreationStrategyFactory.getInstance();
long authorId = creationStrategy.getAuthorUserId(context, article);
if (authorId != JournalCreationStrategy.USE_DEFAULT_USER_ID_STRATEGY) {
userId = authorId;
}
String newContent = creationStrategy.getTransformedContent(
context, article);
if (newContent != JournalCreationStrategy.ARTICLE_CONTENT_UNCHANGED) {
article.setContent(newContent);
}
boolean addCommunityPermissions =
creationStrategy.addCommunityPermissions(context, article);
boolean addGuestPermissions = creationStrategy.addGuestPermissions(
context, article);
JournalArticle existingArticle = null;
if (context.getDataStrategy().equals(
PortletDataHandlerKeys.DATA_STRATEGY_MIRROR)) {
existingArticle = JournalArticleUtil.fetchByUUID_G(
article.getUuid(), context.getGroupId());
if (existingArticle == null) {
existingArticle = JournalArticleLocalServiceUtil.addArticle(
article.getUuid(), userId, articleId, autoArticleId,
plid, article.getVersion(), article.getTitle(),
article.getDescription(), article.getContent(),
article.getType(), parentStructureId, parentTemplateId,
displayDateMonth, displayDateDay, displayDateYear,
displayDateHour, displayDateMinute, expirationDateMonth,
expirationDateDay, expirationDateYear, expirationDateHour,
expirationDateMinute, neverExpire, reviewDateMonth,
reviewDateDay, reviewDateYear, reviewDateHour,
reviewDateMinute, neverReview, article.getIndexable(),
article.getSmallImage(), article.getSmallImageURL(),
smallFile, images, articleURL, prefs, tagsEntries,
addCommunityPermissions, addGuestPermissions);
}
else {
existingArticle = JournalArticleLocalServiceUtil.updateArticle(
userId, existingArticle.getGroupId(),
existingArticle.getArticleId(),
existingArticle.getVersion(), incrementVersion,
article.getTitle(), article.getDescription(),
article.getContent(), article.getType(),
existingArticle.getStructureId(),
existingArticle.getTemplateId(), displayDateMonth,
displayDateDay, displayDateYear, displayDateHour,
displayDateMinute, expirationDateMonth, expirationDateDay,
expirationDateYear, expirationDateHour,
expirationDateMinute, neverExpire, reviewDateMonth,
reviewDateDay, reviewDateYear, reviewDateHour,
reviewDateMinute, neverReview, article.getIndexable(),
article.getSmallImage(), article.getSmallImageURL(),
smallFile, images, articleURL, prefs, tagsEntries);
}
}
else {
existingArticle = JournalArticleLocalServiceUtil.addArticle(
userId, articleId, autoArticleId, plid, article.getVersion(),
article.getTitle(), article.getDescription(),
article.getContent(), article.getType(), parentStructureId,
parentTemplateId, displayDateMonth, displayDateDay,
displayDateYear, displayDateHour, displayDateMinute,
expirationDateMonth, expirationDateDay, expirationDateYear,
expirationDateHour, expirationDateMinute, neverExpire,
reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
reviewDateMinute, neverReview, article.getIndexable(),
article.getSmallImage(), article.getSmallImageURL(), smallFile,
images, articleURL, prefs, tagsEntries, addCommunityPermissions,
addGuestPermissions);
}
long strategyApprovalUserId = creationStrategy.getApprovalUserId(
context, article);
if ((strategyApprovalUserId !=
JournalCreationStrategy.USE_DEFAULT_USER_ID_STRATEGY) ||
(article.isApproved() && !existingArticle.isApproved())) {
long approvedByUserId = strategyApprovalUserId;
if (approvedByUserId == 0) {
approvedByUserId = context.getUserId(
article.getApprovedByUserUuid());
}
JournalArticleLocalServiceUtil.approveArticle(
approvedByUserId, context.getGroupId(),
existingArticle.getArticleId(), existingArticle.getVersion(),
articleURL, prefs);
}
if (context.getBooleanParameter(_NAMESPACE, "comments")) {
context.importComments(
JournalArticle.class, article.getResourcePrimKey(),
existingArticle.getResourcePrimKey(), context.getGroupId());
}
if (context.getBooleanParameter(_NAMESPACE, "ratings")) {
context.importRatingsEntries(
JournalArticle.class, article.getResourcePrimKey(),
existingArticle.getResourcePrimKey());
}